@echo off
chcp 65001
echo 开始更新云服务器代码...

:: 设置服务器信息
set SERVER=root@182.160.6.140
set DEPLOY_PATH=/var/www/binance-analysis

:: 获取脚本所在目录
cd /d %~dp0
cd ..

:: 清理旧的打包文件
echo 清理旧文件...
if exist %TEMP%\deploy.zip del /f /q %TEMP%\deploy.zip

:: 打包项目文件(排除node_modules和.git)
echo 打包项目文件...
powershell -Command "Get-ChildItem -Path . -Exclude node_modules,.git,*.log | Compress-Archive -DestinationPath %TEMP%\deploy.zip -Force"

:: 确认是否继续上传（可能需要SSH密码）
set /p CONTINUE=是否继续上传到服务器？ (Y/N): 
if /i "%CONTINUE%" NEQ "Y" goto :LOCAL_ONLY

:: 上传到服务器
echo 上传文件到服务器...
scp %TEMP%\deploy.zip %SERVER%:%DEPLOY_PATH%/

:: 清理本地临时文件
del /f /q %TEMP%\deploy.zip

:: SSH连接到服务器执行更新操作
echo 连接服务器执行更新...
ssh %SERVER% "cd %DEPLOY_PATH% && echo '备份当前node_modules...' && if [ -d 'node_modules' ]; then mv node_modules node_modules_bak; fi && echo '清理旧文件...' && find . -maxdepth 1 -not -name 'node_modules_bak' -not -name '.' -not -name '..' -not -name 'deploy.zip' -exec rm -rf {} \; && echo '解压新文件...' && unzip -o deploy.zip && rm -f deploy.zip && echo '恢复node_modules...' && if [ -d 'node_modules_bak' ]; then rm -rf node_modules && mv node_modules_bak node_modules; fi && echo '更新pm2...' && npm install pm2@latest -g && echo '安装新依赖...' && npm install && echo '设置文件权限...' && if [ -d 'scripts' ]; then chmod +x scripts/*.sh; fi && pm2 stop binance-analysis || true && pm2 start src/server.js --name binance-analysis && pm2 save"

goto :EOF

:LOCAL_ONLY
echo 仅执行本地更新...

:: 停止现有的Node.js进程
echo 停止现有进程...
call pm2 stop all

:: 拉取最新代码
echo 拉取最新代码...
call git pull

:: 安装依赖
echo 安装依赖...
call npm install

:: 创建缓存目录（如果不存在）
echo 创建缓存目录...
if not exist cache mkdir cache

:: 启动应用
echo 启动应用...
call pm2 start src/server.js --name binance-analysis

:: 启动缓存更新任务
echo 启动缓存更新任务...
call pm2 start scripts/update_cache.js --name cache-updater

:: 启动监控脚本
echo 启动监控脚本...
call pm2 start scripts/monitor.js --name monitor

:: 保存PM2配置
call pm2 save

:EOF
echo 部署完成！ 